@@ -0,0 +1,29 @@ |
||
| 1 |
+# -*- coding: utf-8 -*- |
|
| 2 |
+from __future__ import unicode_literals |
|
| 3 |
+ |
|
| 4 |
+from django.db import models, migrations |
|
| 5 |
+ |
|
| 6 |
+ |
|
| 7 |
+class Migration(migrations.Migration): |
|
| 8 |
+ |
|
| 9 |
+ dependencies = [ |
|
| 10 |
+ ('group', '0017_groupphotoinfo_photo_from'),
|
|
| 11 |
+ ] |
|
| 12 |
+ |
|
| 13 |
+ operations = [ |
|
| 14 |
+ migrations.AddField( |
|
| 15 |
+ model_name='groupphotoinfo', |
|
| 16 |
+ name='photo_thumbnail2_h', |
|
| 17 |
+ field=models.IntegerField(default=0, help_text='\u7167\u7247\u7f29\u7565\u56fe\u9ad8\u5ea6', verbose_name='photo_thumbnail2_h'), |
|
| 18 |
+ ), |
|
| 19 |
+ migrations.AddField( |
|
| 20 |
+ model_name='groupphotoinfo', |
|
| 21 |
+ name='photo_thumbnail2_path', |
|
| 22 |
+ field=models.CharField(help_text='\u7167\u7247\u7f29\u7565\u56fe\u5b58\u653e\u8def\u5f84', max_length=255, null=True, verbose_name='photo_thumbnail2_path', blank=True), |
|
| 23 |
+ ), |
|
| 24 |
+ migrations.AddField( |
|
| 25 |
+ model_name='groupphotoinfo', |
|
| 26 |
+ name='photo_thumbnail2_w', |
|
| 27 |
+ field=models.IntegerField(default=0, help_text='\u7167\u7247\u7f29\u7565\u56fe\u5bbd\u5ea6', verbose_name='photo_thumbnail2_w'), |
|
| 28 |
+ ), |
|
| 29 |
+ ] |
@@ -140,12 +140,21 @@ class GroupPhotoInfo(CreateUpdateMixin): |
||
| 140 | 140 |
user_id = models.CharField(_(u'user_id'), max_length=255, blank=True, null=True, help_text=u'用户唯一标识') |
| 141 | 141 |
nickname = models.CharField(_(u'nickname'), max_length=255, blank=True, null=True, help_text=u'用户群组昵称') |
| 142 | 142 |
avatar = models.CharField(_(u'avatar'), max_length=255, blank=True, null=True, help_text=u'用户头像') |
| 143 |
+ |
|
| 143 | 144 |
photo_path = models.CharField(_(u'photo_path'), max_length=255, blank=True, null=True, help_text=u'照片存放路径') |
| 144 | 145 |
photo_w = models.IntegerField(_(u'photo_w'), default=0, help_text=u'照片宽度') |
| 145 | 146 |
photo_h = models.IntegerField(_(u'photo_h'), default=0, help_text=u'照片高度') |
| 147 |
+ |
|
| 148 |
+ # 双列: 540, 40-50K |
|
| 146 | 149 |
photo_thumbnail_path = models.CharField(_(u'photo_thumbnail_path'), max_length=255, blank=True, null=True, help_text=u'照片缩略图存放路径') |
| 147 | 150 |
photo_thumbnail_w = models.IntegerField(_(u'photo_thumbnail_w'), default=0, help_text=u'照片缩略图宽度') |
| 148 | 151 |
photo_thumbnail_h = models.IntegerField(_(u'photo_thumbnail_h'), default=0, help_text=u'照片缩略图高度') |
| 152 |
+ |
|
| 153 |
+ # 单列: 1080, xx-100K |
|
| 154 |
+ photo_thumbnail2_path = models.CharField(_(u'photo_thumbnail2_path'), max_length=255, blank=True, null=True, help_text=u'照片缩略图存放路径') |
|
| 155 |
+ photo_thumbnail2_w = models.IntegerField(_(u'photo_thumbnail2_w'), default=0, help_text=u'照片缩略图宽度') |
|
| 156 |
+ photo_thumbnail2_h = models.IntegerField(_(u'photo_thumbnail2_h'), default=0, help_text=u'照片缩略图高度') |
|
| 157 |
+ |
|
| 149 | 158 |
comment_num = models.IntegerField(_(u'comment_num'), default=0, help_text=u'照片评论数量') |
| 150 | 159 |
thumbup_num = models.IntegerField(_(u'thumbup_num'), default=0, help_text=u'照片点赞数量') |
| 151 | 160 |
photo_from = models.IntegerField(_(u'photo_from'), choices=PHOTO_FROM, default=APP_GROUP, help_text=u'照片来源') |
@@ -165,6 +174,10 @@ class GroupPhotoInfo(CreateUpdateMixin): |
||
| 165 | 174 |
def photo_thumbnail_url(self): |
| 166 | 175 |
return img_url(self.photo_thumbnail_path) |
| 167 | 176 |
|
| 177 |
+ @property |
|
| 178 |
+ def photo_thumbnail2_url(self): |
|
| 179 |
+ return img_url(self.photo_thumbnail2_path) |
|
| 180 |
+ |
|
| 168 | 181 |
def photo_info(self, user_id): |
| 169 | 182 |
try: |
| 170 | 183 |
group = GroupInfo.objects.get(group_id=self.group_id) |
@@ -183,6 +196,9 @@ class GroupPhotoInfo(CreateUpdateMixin): |
||
| 183 | 196 |
'photo_thumbnail_url': self.photo_thumbnail_url, |
| 184 | 197 |
'photo_thumbnail_w': self.photo_thumbnail_w, |
| 185 | 198 |
'photo_thumbnail_h': self.photo_thumbnail_h, |
| 199 |
+ 'photo_thumbnail2_url': self.photo_thumbnail2_url, |
|
| 200 |
+ 'photo_thumbnail2_w': self.photo_thumbnail2_w, |
|
| 201 |
+ 'photo_thumbnail2_h': self.photo_thumbnail2_h, |
|
| 186 | 202 |
'user_id': self.user_id, |
| 187 | 203 |
'nickname': self.nickname, |
| 188 | 204 |
'avatar': self.avatar, |
@@ -552,6 +552,7 @@ def flyimg_upload_api(request): |
||
| 552 | 552 |
if photo: |
| 553 | 553 |
photo_path = 'fly/{uuid}{extension}'.format(uuid=shortuuid.uuid(), extension=os.path.splitext(photo.name)[1])
|
| 554 | 554 |
photo_thumbnail_path = photo_path.replace('.', '_thumbnail.')
|
| 555 |
+ photo_thumbnail2_path = photo_path.replace('.', '_thumbnail2.')
|
|
| 555 | 556 |
|
| 556 | 557 |
if default_storage.exists(photo_path): |
| 557 | 558 |
default_storage.delete(photo_path) |
@@ -562,11 +563,18 @@ def flyimg_upload_api(request): |
||
| 562 | 563 |
# default_storage.save(photo_thumbnail_path, photo) |
| 563 | 564 |
|
| 564 | 565 |
# 群组照片缩略图生成 |
| 566 |
+ # 双列: 540, 40-50K |
|
| 565 | 567 |
photo_w, photo_h, photo_thumbnail_w, photo_thumbnail_h = make_thumbnail( |
| 566 | 568 |
os.path.join(settings.MEDIA_ROOT, photo_path).replace('\\', '/'),
|
| 567 | 569 |
os.path.join(settings.MEDIA_ROOT, photo_thumbnail_path).replace('\\', '/'),
|
| 568 | 570 |
settings.THUMBNAIL_MAX_WIDTH |
| 569 | 571 |
) |
| 572 |
+ # 单列: 1080, xx-100K |
|
| 573 |
+ photo_w, photo_h, photo_thumbnail2_w, photo_thumbnail2_h = make_thumbnail( |
|
| 574 |
+ os.path.join(settings.MEDIA_ROOT, photo_path).replace('\\', '/'),
|
|
| 575 |
+ os.path.join(settings.MEDIA_ROOT, photo_thumbnail_path).replace('\\', '/'),
|
|
| 576 |
+ settings.THUMBNAIL_MAX_WIDTH2 |
|
| 577 |
+ ) |
|
| 570 | 578 |
|
| 571 | 579 |
# 群组照片记录创建 |
| 572 | 580 |
group_photo = GroupPhotoInfo.objects.create( |
@@ -580,6 +588,9 @@ def flyimg_upload_api(request): |
||
| 580 | 588 |
photo_thumbnail_path=photo_thumbnail_path, |
| 581 | 589 |
photo_thumbnail_w=photo_thumbnail_w, |
| 582 | 590 |
photo_thumbnail_h=photo_thumbnail_h, |
| 591 |
+ photo_thumbnail2_path=photo_thumbnail2_path, |
|
| 592 |
+ photo_thumbnail2_w=photo_thumbnail2_w, |
|
| 593 |
+ photo_thumbnail2_h=photo_thumbnail2_h, |
|
| 583 | 594 |
) |
| 584 | 595 |
|
| 585 | 596 |
# 设置群组最后一张照片PK |
@@ -879,13 +890,16 @@ def pai2_home_api(request): |
||
| 879 | 890 |
'photo_thumbnail_url': img_url(row[9]), |
| 880 | 891 |
'photo_thumbnail_w': row[10], |
| 881 | 892 |
'photo_thumbnail_h': row[11], |
| 882 |
- 'user_id': row[12], |
|
| 883 |
- 'nickname': row[13], |
|
| 884 |
- 'avatar': row[14], |
|
| 885 |
- 'comment_num': row[15], |
|
| 886 |
- 'thumbup_num': row[16], |
|
| 887 |
- 'photo_from': row[17], |
|
| 888 |
- 'created_at': row[18], |
|
| 893 |
+ 'photo_thumbnail2_url': img_url(row[12]), |
|
| 894 |
+ 'photo_thumbnail2_w': row[13], |
|
| 895 |
+ 'photo_thumbnail2_h': row[14], |
|
| 896 |
+ 'user_id': row[15], |
|
| 897 |
+ 'nickname': row[16], |
|
| 898 |
+ 'avatar': row[17], |
|
| 899 |
+ 'comment_num': row[18], |
|
| 900 |
+ 'thumbup_num': row[19], |
|
| 901 |
+ 'photo_from': row[20], |
|
| 902 |
+ 'created_at': row[21], |
|
| 889 | 903 |
} for row in rows] |
| 890 | 904 |
|
| 891 | 905 |
[row.update({'thumbup': get_group_photo_thumbup_flag(row['photo_id'], user_id)}) for row in rows]
|
@@ -234,7 +234,8 @@ CURTAIL_UUID_LENGTH = 7 |
||
| 234 | 234 |
WATERMARK_LOGO = os.path.join(PROJ_DIR, 'static/pai2/img/paiai_96_96.png').replace('\\', '/')
|
| 235 | 235 |
|
| 236 | 236 |
# 缩略图设置 |
| 237 |
-THUMBNAIL_MAX_WIDTH = 360 |
|
| 237 |
+THUMBNAIL_MAX_WIDTH = 540 |
|
| 238 |
+THUMBNAIL_MAX_WIDTH2 = 1080 |
|
| 238 | 239 |
|
| 239 | 240 |
# 首页设置 |
| 240 | 241 |
PAI2_HOME_PER_PAGE = 20 # 首页照片每页数量 |
@@ -199,14 +199,23 @@ def session_join_api(request): |
||
| 199 | 199 |
for photo in photos: |
| 200 | 200 |
photo_path = photo.p_photo_path |
| 201 | 201 |
photo_thumbnail_path = photo_path.replace('.', '_thumbnail.')
|
| 202 |
+ photo_thumbnail_path = photo_path.replace('.', '_thumbnail2.')
|
|
| 202 | 203 |
|
| 203 | 204 |
# 群组照片缩略图生成 |
| 205 |
+ # 双列: 540, 40-50K |
|
| 204 | 206 |
photo_w, photo_h, photo_thumbnail_w, photo_thumbnail_h = make_thumbnail( |
| 205 | 207 |
os.path.join(settings.MEDIA_ROOT, photo_path).replace('\\', '/'),
|
| 206 | 208 |
os.path.join(settings.MEDIA_ROOT, photo_thumbnail_path).replace('\\', '/'),
|
| 207 | 209 |
settings.THUMBNAIL_MAX_WIDTH |
| 208 | 210 |
) |
| 209 | 211 |
|
| 212 |
+ # 单列: 1080, xx-100K |
|
| 213 |
+ photo_w, photo_h, photo_thumbnail2_w, photo_thumbnail2_h = make_thumbnail( |
|
| 214 |
+ os.path.join(settings.MEDIA_ROOT, photo_path).replace('\\', '/'),
|
|
| 215 |
+ os.path.join(settings.MEDIA_ROOT, photo_thumbnail_path).replace('\\', '/'),
|
|
| 216 |
+ settings.THUMBNAIL_MAX_WIDTH2 |
|
| 217 |
+ ) |
|
| 218 |
+ |
|
| 210 | 219 |
# 群组照片记录创建 |
| 211 | 220 |
group_photo = GroupPhotoInfo.objects.create( |
| 212 | 221 |
group_id=group_id, |
@@ -219,6 +228,9 @@ def session_join_api(request): |
||
| 219 | 228 |
photo_thumbnail_path=photo_thumbnail_path, |
| 220 | 229 |
photo_thumbnail_w=photo_thumbnail_w, |
| 221 | 230 |
photo_thumbnail_h=photo_thumbnail_h, |
| 231 |
+ photo_thumbnail2_path=photo_thumbnail2_path, |
|
| 232 |
+ photo_thumbnail2_w=photo_thumbnail2_w, |
|
| 233 |
+ photo_thumbnail2_h=photo_thumbnail2_h, |
|
| 222 | 234 |
photo_from=GroupPhotoInfo.SESSION_GROUP, |
| 223 | 235 |
) |
| 224 | 236 |
|
@@ -2,9 +2,10 @@ |
||
| 2 | 2 |
|
| 3 | 3 |
PAI2_HOME_API = ( |
| 4 | 4 |
r"select " |
| 5 |
- r"T1.group_id, T2.group_name, T2.group_default_avatar, T2.group_avatar, T2.group_from, T3.id, T3.photo_path, T3.photo_w, " |
|
| 6 |
- r"T3.photo_h, T3.photo_thumbnail_path, T3.photo_thumbnail_w, T3.photo_thumbnail_h, T3.user_id, T3.nickname, " |
|
| 7 |
- r"T3.avatar, T3.comment_num, T3.thumbup_num, T3.photo_from, T3.created_at " |
|
| 5 |
+ r"T1.group_id, T2.group_name, T2.group_default_avatar, T2.group_avatar, T2.group_from, T3.id, T3.photo_path, " |
|
| 6 |
+ r"T3.photo_w, T3.photo_h, T3.photo_thumbnail_path, T3.photo_thumbnail_w, T3.photo_thumbnail_h, " |
|
| 7 |
+ r"T3.photo_thumbnail2_path, T3.photo_thumbnail2_w, T3.photo_thumbnail2_h, T3.user_id, T3.nickname, T3.avatar, " |
|
| 8 |
+ r"T3.comment_num, T3.thumbup_num, T3.photo_from, T3.created_at " |
|
| 8 | 9 |
r"from (select * from group_groupuserinfo where user_id='{user_id}' and user_status=1) as T1 "
|
| 9 | 10 |
r"left outer join group_groupinfo as T2 on T1.group_id = T2.group_id " |
| 10 | 11 |
r"left outer join group_groupphotoinfo as T3 on T1.group_id = T3.group_id and T3.id > T1.current_id " |